iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0
Odoo

前後端整合學習,不只是後端管理系列 第 3

【Day3】使用docker架設odoo

  • 分享至 

  • xImage
  •  

首先是注意,Odoo版本與資料庫版本的對應,這樣對應起來比較不會有奇怪的問題……,所以大家在建立專案的時候要指定對的版本,可以參考下表來設定。

https://ithelp.ithome.com.tw/upload/images/20240911/201654877lnw7PYOTh.png

在使用 Docker 架設 Odoo 時,版本選擇與正確的指令運用至關重要。Odoo 是一款功能強大的開源 ERP 系統,但在部署時,若忽略了版本選擇的細節,可能會遇到無法啟動、性能不佳或功能不全的問題。因此,了解 Odoo 與資料庫的版本對應、配置細節及 Docker 基本指令,是順利架設 Odoo 的關鍵。

版本選擇的重要性

Odoo 的每個主要版本通常都有一組相對應的 PostgreSQL 版本。這是因為 Odoo 在不同的版本中,對資料庫結構和查詢方式都有特定的需求。例如,Odoo 14 通常與 PostgreSQL 12 或 13 搭配,而 Odoo 15 則更適合與 PostgreSQL 13 或 14 結合使用。如果選擇了不相容的版本組合,可能會導致各種問題,包括資料庫連接錯誤、查詢速度慢或甚至無法啟動應用。

此外,Odoo 社群版和企業版在功能和擴展性上也有所不同。社群版(Community Edition)是免費的開源版本,適合中小企業或初次使用者;企業版(Enterprise Edition)則是付費版,包含更多的模組和技術支援。如果你是新手,建議先從社群版開始,熟悉 Odoo 的基本操作和功能,然後再考慮是否升級至企業版。

Odoo 的部署選項

在選擇 Odoo 版本時,還應考慮你的業務需求和 IT 基礎設施。如果你的企業需要較新的功能,或者計劃在短期內擴展業務,可以選擇最新的穩定版本;而如果更重視系統的穩定性和長期支持,則可以選擇 LTS 版本(長期支持版本),如 Odoo 14。LTS 版本通常有更長的支持周期,適合對穩定性要求較高的企業。

使用 Docker 部署 Odoo 時,建議優先使用官方的 Docker 鏡像。這些鏡像經過官方維護和測試,包含了 Odoo 運行所需的所有依賴和環境配置,大大減少了手動配置的風險和工作量。例如,使用以下命令可以快速啟動一個 Odoo 容器:

docker run -d -e POSTGRES_DB=odoo -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -p 8069:8069 --name odoo --link db:db odoo:15.0

這個指令中,我們指定了資料庫名稱、使用者及密碼,同時將 Odoo 的預設端口 8069 暴露在主機上,方便透過瀏覽器訪問。

指令說明與基本操作

使用 Docker 部署 Odoo,最基本的指令是 docker run,它用於啟動一個新的容器。在這個過程中,你可以指定容器的名稱、網路配置、環境變數等。上面提到的 docker run 指令,除了啟動 Odoo 容器外,還使用了 --link 參數來將 Odoo 容器與一個名為 db 的 PostgreSQL 容器鏈接起來,確保 Odoo 能夠正確訪問資料庫。

另一個常用的指令是 docker-compose。它允許你使用一個 YAML 文件來定義和管理多個容器的部署,這對於複雜的系統架構特別有用。例如,以下是一個 docker-compose.yml 文件的範例,用於同時啟動 Odoo 和 PostgreSQL:

version: '3.1'

services:
  web:
    image: odoo:17  # 使用最新版本的 Odoo
    depends_on:
      - db
    ports:
      - "8069:8069"
    environment:
      - HOST=db
      - USER=odoo
      - PASSWORD=odoo
    volumes:
      - odoo-web-data:/var/lib/odoo
      - ./config:/etc/odoo  # 確保掛載了 config 目錄
      - ./addons:/mnt/extra-addons
      - ./log:/var/log/odoo
    command: ["odoo", "-c", "/etc/odoo/odoo.conf"]

  db:
    image: postgres:15  # 使用最新版本的 Postgres
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_PASSWORD=odoo
      - POSTGRES_USER=odoo
    volumes:
      - odoo-db-data:/var/lib/postgresql/data
    ports:
      - "5433:5432"

volumes:
  odoo-web-data:
  odoo-db-data:


這個配置文件會自動處理 Odoo 和 PostgreSQL 的啟動順序,並配置它們之間的網路連接,大大簡化了部署過程。使用 docker-compose up -d 指令即可快速啟動整個系統。

但記得,要先創建config資料夾,將需要的odoo.conf放進去,這樣odoo才會乖乖聽話喔XD

[options]
db_host = db
db_port = 5432
db_user = odoo
db_password = odoo
addons_path = /mnt/extra-addons
logfile = /var/log/odoo/odoo.log

其他注意事項

初次使用 Docker 部署 Odoo 的用戶,常見的問題包括環境變數配置錯誤、port衝突、容器間網路連接失敗等。這些問題往往源於對 Docker 的理解不足或 Odoo 的特殊需求沒有被正確配置。

為了避免這些問題,應該多加注意以下幾點:

  1. 環境變數配置:Odoo 的運行依賴於多個環境變數,例如資料庫的名稱、使用者、密碼等。在配置這些變數時,要確保與實際使用的資料庫一致。
  2. 資料持久化:Docker 容器默認是無狀態的,一旦停止或刪除,容器內的資料將會消失。因此,對於生產環境來說,必須配置資料卷(volumes)來確保資料的持久性。
  3. PORT配置:確保主機上的端口與 Docker 容器內的PORT對應正確,避免衝突。同時,注意在生產環境中使用反向代理(如 Nginx)來管理流量和安全性。

參考

Github


上一篇
【Day2】了解odoo生態
下一篇
【Day4】odoo網頁設定與資料庫連線
系列文
前後端整合學習,不只是後端管理19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言